package com.elinshaw.hive;

import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

/**
 * 一个用户UDF必须org.apache.hadoop.hive.ql.exec.UDF;
 * 一个UDF必须要包含有evaluate()方法，但是该方法并不存在于UDF中。
 * evaluate的参数个数以及类型都是用户自定义的。
 * 在使用的时候，Hive会调用UDF的evaluate()方法。
 * <p>
 * <p>
 * dd jar /home/hadoop/LowerUDF.jar
 * create temporary function lower_udf as "UDF.LowerUDF";
 * select lower_udf(name) from student;
 *
 * @author Administrator
 */
public class MyUDF extends UDF {

    public Text evaluate(Text str) {
        if (null == str) {
            return null;
        }

        if (StringUtils.isBlank(str.toString())) {
            return null;
        }

        return new Text(str.toString().toLowerCase());
    }


}
